/*
 * @Description:
 * @Version: 2.0
 * @Autor: wiz
 * @Date: 2023-07-15 13:50:08
 * @LastEditors: wiz
 * @LastEditTime: 2024-05-07 09:37:35
 */
import { ifs } from '@/services';

namespace N_oMagicbox {
  export interface I_source {
    isRule?: boolean;
    funid?: string; // 功能ID:
    field?: string; // 功能名
    limit?: number; // 每张表的选择限制
    filter?: {
      globalSearch?: string; // 全局搜索
      // 初始化过滤 initSearch 可以是一个new ts.T_filter() 实例
      initSearch?: ifs.I_fv[] | ifs.I_filter;
    };
  }
  export interface I_cf {
    // 设置数据源
    customSearch?: string;
    isDropdown?: boolean; // false
    // 组件set name 组件名 set 根据相关组件属性灵活设置，如组件有此属性则会被修改
    // 例：compSet:[{name:"baseGrid",modify:[path:"config.tableDataSetting.editable",value:true]}]
    compSet?: Array<{
      name: string;
      modify: Array<{ path: string; value: any }>;
      // 插入额外的属性到组件
      // 例：baseGrid 控制多选属性 multipleSelection,但multipleSelection不在标准配置里,此组件通过此处一并送入
      append?: Array<{ key: string; value: any }>;
    }>;

    // 是否通过表内字段打开
    isInTable?: boolean;

    tableConfig?: Array<{
      title: string;
      isShow: boolean;
      // filter: string | number;
      // sort: {
      //   value: 'asc' | 'desc';
      //   weight: number;
      // };
    }>;
    toolbarConfig?: any;
    isMini?: boolean; // 是否mini显示
    // 弹窗尺寸（优先级最高）
    boxSize?: any; // { "height": number; "width": number }
    // isMini = ture 有效
    miniBound?: {
      x?: number;
      y?: number;
      width?: number;
      height?: number;
    };
    isFunLayout?: boolean; // 是否按原功能显示
    // isFunLayout = false 有效
    hideAreas?: Array<string>; // 隐藏区域 （当全功能展示时，此处填写cellId，可隐藏指定区域）
    fromFunName?: string; // 来自哪个功能
    fromFieldName?: string; // 来自哪个字段
    // 底部自定义按钮
    customBtns?: Array<{
      key: string;
      title?: string;
      icon?: string;
      type?: string;
    }>;
    // 头部展示
    headTitle?: Array<{
      label: string;
      value: string;
    }>;
  }
  export interface I_conf {
    source?: I_source;
    receiver?: string; // 接受方的标识
    config?: I_cf;
  }
}
export { N_oMagicbox };
